package com.efeichong.dynamic;

import com.efeichong.util.EntityUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * @author lxk
 * @date 2022/8/28
 * @description 决定使用哪个数据源
 */
@Slf4j
public class DynamicDataSource extends AbstractRoutingDataSource {

    /*
     * 代码中的determineCurrentLookupKey方法取得一个字符串，
     * 该字符串将与配置文件中的相应字符串进行匹配以定位数据源，配置文件，即applicationContext.xml文件中需要要如下代码：(non-Javadoc)
     * @see org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource#determineCurrentLookupKey()
     */
    @Override
    protected Object determineCurrentLookupKey() {
        String dataSourceName = DynamicDataSourceContextHolder.get();
        if (EntityUtils.isEmpty(dataSourceName)){
            dataSourceName = DynamicDataSourceContextHolder.getDefault();
        }
        log.info("当前数据源是：{}", dataSourceName);
        return dataSourceName;
    }
}